import Vue from 'vue'
import Vuex from 'vuex'
// vuex 配置
// Vuex的核心就是Store（仓库）相当于是一个容器，一个store实例一下的属性和方法
// state 定义属性（状态，数据）
Vue.use(Vuex)
// 创建与导出Store对象
export default new Vuex.Store({
// 定义属性（数据
  state: {
    count: 0
  },
  // 只有 mutations 中定义的函数，才有权力修改数据
  mutations: {
    add (state) {
      state.count++
    },
    addN (state, step) {
      state.count += step
    },
    sub (state) {
      if (state.count > 0) {
        state.count--
      }
    },
    subN (state, step) {
      if (state.count > 0) {
        state.count -= step
      }
    }
  },
  // 定义actions，要执行的操作 ，如流程的判断、异步操作等
  // Action 函数接受一个与 store 实例具有相同方法和属性的 context 对象
  actions: {
    addAync (context) {
      setTimeout(function () {
        // commit 提交变化，修改数据的唯一方式就是提交一个 mutation
        context.commit('add')
      }, 1000)
    },
    addNAync (context, step) {
      setTimeout(function () {
        context.commit('addN', step)
      }, 1000)
    },
    subAync (context) {
      setTimeout(function () {
        context.commit('sub')
      }, 1000)
    },
    subNAync (context, step) {
      setTimeout(function () {
        context.commit('subN', step)
      }, 1000)
    }
  },
  modules: {},
  getters: {
    show (state) {
      if (state.count % 2 === 0) {
        return '当前数据是[偶数]'
      } else {
        return '当前数据是[奇数 ]'
      }
    }
  }
})
